/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekamansubkelompokanggaran;

import java.util.Map;
import org.sadhar.sipp.posbiaya.*;
import org.sadhar.sia.framework.ClassApplicationModule;
import org.sadhar.sipp.kelompokpengurusbiaya.KelompokPengurusBiaya;
import org.sadhar.sipp.kelompokpengurusbiaya.KelompokPengurusBiayaDAO;
import org.sadhar.sipp.kelompokpengurusbiaya.KelompokPengurusBiayaDAOImpl;
import org.zkoss.zul.Button;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Label;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;

/**
 * Digunakan untuk menangani komponen perekamansubkelompokanggaran.popup.zul
 * @author bloodrunk
 */
public class PerekamannSubKelompokAnggaranPosBiayaPopupWnd extends ClassApplicationModule {

    private Listbox lstboxPosBiaya;
    private Listbox lstboxDaftarPos;
    private Textbox txtboxSearch;
    private PosBiayaDAO posBiayaDAO;
    private KelompokPengurusBiayaDAO kelompokPengurusBiayaDAO;
    private PerekamanSubKelompokAnggaranDAO perekamanSubKelompokAnggaranDAO;

    public PerekamannSubKelompokAnggaranPosBiayaPopupWnd() {
        posBiayaDAO = new PosBiayaDAOImpl();
        kelompokPengurusBiayaDAO = new KelompokPengurusBiayaDAOImpl();
        perekamanSubKelompokAnggaranDAO = new PerekamanSubKelompokAnggaranDAOImpl();
    }

    public void onCreate() throws Exception {
        Window window = (Window) this.getRoot().getFellow("contentDiv").getFirstChild();
        lstboxPosBiaya = (Listbox) getFellow("lstboxPosBiaya");
        lstboxDaftarPos = (Listbox) window.getFellow("lstboxDaftarPos");
        load();
    }

    /**
     * Digunakan untuk melakukan pengisiaan defaukt komponen listbox
     * @throws Exception
     */
    public void load() throws Exception {
        lstboxPosBiaya.getItems().clear();
        Window window = (Window) (Window) this.getRoot().getFellow("contentDiv").getFirstChild();
        Textbox txtboxIdTahunKelompokAnggaran = (Textbox) window.getFellow("txtboxIdTahunKelompokAnggaran");
        Textbox txtboxIdJenisBiaya = (Textbox) window.getFellow("txtboxIdJenisBiaya");
        Combobox cmbboxTahunKelompokAnggaran = (Combobox) window.getFellow("cmbboxTahunKelompokAnggaran");
        int no = 1;
        for (Map map : perekamanSubKelompokAnggaranDAO.getPosBiaya(txtboxIdJenisBiaya.getValue(), String.valueOf(cmbboxTahunKelompokAnggaran.getValue()))) {
            Listitem item = new Listitem();
            item.setValue(map);
            item.appendChild(new Listcell("" + no++));
            item.appendChild(new Listcell(map.get("namaPosBiaya").toString()));
            lstboxPosBiaya.appendChild(item);
        }
    }

    /**
     * Digunakan untuk melakukan pemilihan data pos biaya
     * @throws Exception
     */
    public void lstboxPosBiayaOnSelect() throws Exception {
        //Get.........
        Window window = (Window) (Window) this.getRoot().getFellow("contentDiv").getFirstChild();
        Textbox txtboxKeySearch = (Textbox) window.getFellow("txtboxKeySearch");
        Textbox txtboxIdPosBiaya = (Textbox) window.getFellow("txtboxIdPosBiaya");
        Textbox txtboxIdJenisBiaya = (Textbox) window.getFellow("txtboxIdJenisBiaya");
        Textbox txtboxIdTahunKelompokAnggaran = (Textbox) window.getFellow("txtboxIdTahunKelompokAnggaran");
        Textbox txtboxKodeKelompokBiaya = (Textbox) window.getFellow("txtboxKodeKelompokBiaya");
        Label lblNamaPosBiaya = (Label) window.getFellow("lblNamaPosBiaya");
        Label lblKelompokPengurusBiaya = (Label) window.getFellow("lblKelompokPengurusBiaya");
        Label lblStatusKelompokBiaya = (Label) window.getFellow("lblStatusKelompokBiaya");
        Combobox cmbboxTahunKelompokAnggaran = (Combobox) window.getFellow("cmbboxTahunKelompokAnggaran");
        //Set............
        Map posBiaya = (Map) lstboxPosBiaya.getSelectedItem().getValue();
        //txtboxKodeKelompokBiaya.setValue(posBiaya.get("kodePos").toString());
        txtboxIdJenisBiaya.setValue(posBiaya.get("kodeJenisBiaya").toString());
        txtboxKeySearch.setValue(posBiaya.get("namaPosBiaya").toString());
        txtboxIdPosBiaya.setValue(String.valueOf(posBiaya.get("kodePosBiaya").toString()));
        lblNamaPosBiaya.setValue(posBiaya.get("namaPosBiaya").toString());
        lblStatusKelompokBiaya.setValue(posBiaya.get("isMutlak").toString());
        KelompokPengurusBiaya pengurusBiaya = kelompokPengurusBiayaDAO.select(Integer.valueOf(posBiaya.get("kodeKelompokPengurusBiaya").toString()));
        lblKelompokPengurusBiaya.setValue(pengurusBiaya.getNamaKelompokPengurusBiaya());
        loadPosBiaya(Integer.valueOf(posBiaya.get("kodePosBiaya").toString()),
                cmbboxTahunKelompokAnggaran.getValue(), txtboxIdJenisBiaya.getValue(), window);
        this.detach();
    }

    /**
     * Digunakan untuk memasukan isi dari pos biaya yang telah dipilih
     * @param idPosBiaya
     * @param tahun
     * @param kodeJenis
     * @param window
     * @throws Exception
     */
    public void loadPosBiaya(int idPosBiaya, String tahun, String kodeJenis, Window window) throws Exception {
        lstboxDaftarPos.getItems().clear();
        System.out.println(tahun);
        System.out.println(idPosBiaya);
        System.out.println(kodeJenis);
        for (Map posBiaya : perekamanSubKelompokAnggaranDAO.getPosBiaya(idPosBiaya)) {
            Listitem item = new Listitem();
            item.setValue(posBiaya);
            Checkbox checkbox = new Checkbox();
            checkbox.setChecked(false);
            checkbox.setId(posBiaya.get("kodePosBiaya").toString());
            for (Map posIn : perekamanSubKelompokAnggaranDAO.getPosBiaya(idPosBiaya, tahun)) {
                if (posIn.get("kodePosBiaya").toString().equals(posBiaya.get("kodePosBiaya").toString())) {
                    checkbox.setChecked(true);
                }
            }
            Listcell listcell = new Listcell();
            listcell.appendChild(checkbox);
            item.appendChild(listcell);
            item.appendChild(new Listcell(posBiaya.get("namaPosBiaya").toString()));
            lstboxDaftarPos.appendChild(item);

        }

    }
}
